package chapter06

object Demo16_TraitSelfType {
  def main(args: Array[String]): Unit = {
    var user = new RegisterUser("alice" , "sssssssssssssss")
    user.insert()
  }
}
//用户类
class User(val name: String , val password: String)


trait UserDao {
  //声明自身类型的语法  _:
  _: User =>
  //向数据库插入数据
  def insert(): Unit = {
    println(s"insert into db: ${this.name}")
  }
}

//定义子类  注册用户
class RegisterUser(name: String , password: String ) extends User (name,password) with UserDao
//UserDao要使用User里面的属性，但是又不想让他们有继承关系  就去指定一个自身类型  就相当于外部插入了一个USer对象  相当于实现依赖注入的功能

